/**
 * Created by Administrator on 2018/8/28.
 */
var triArray = new Array();
var insideGrid;
var startGridTwo;
var $$scope;
var codeNow = "";
var tempOriginSelect;
// 报销费用明细
var afrColumns = [{
    id: 'trCompanyName',
    title: '报销主体公司',
    width: 150,
    type: 'string',
    columnClass: 'text-center',
}, {
    id: 'triClassName',
    title: '报销类目',
    width: 150,
    type: 'string',
    columnClass: 'text-center',
}, {
    id: 'money',
    title: '金额',
    type: 'string',
    width: 100,
    columnClass: 'text-center',
    resolution: function (value, record, column, grid, dataNo, columnNo) {
        var content = '￥' + value + '元';
        return content;
      }
}, {
    id: 'startDate',
    title: '开始日期',
    type: 'string',
    width: 100,
    columnClass: 'text-center',
    hideType: 'lg|md|sm|xs',
    resolution: function (value, record, column, grid, dataNo, columnNo) {
        var date = new Date(record.startDate);
        var content = $.fn.dlshouwen.grid.tools.dateFormat(date, "yyyy-MM-dd");
        return content;
    }
}, {
    id: 'endDate',
    title: '结束日期',
    type: 'string',
    width: 150,
    columnClass: 'text-center',
    hideType: 'lg|md|sm|xs',
    resolution: function (value, record, column, grid, dataNo, columnNo) {
        var date = new Date(record.endDate);
        var content = $.fn.dlshouwen.grid.tools.dateFormat(date, "yyyy-MM-dd");
        return content;
    }
}, {
    id: 'startAddr',
    title: '开始地点',
    type: 'string',
    width: 150,
    columnClass: 'text-center',
    hideType: 'lg|md|sm|xs',
}, {
    id: 'endAddr',
    title: '结束地点',
    type: 'string',
    width: 150,
    columnClass: 'text-center',
    hideType: 'lg|md|sm|xs',
}, {
    id: 'triNum',
    title: '原始单据数量',
    type: 'string',
    width: 100,
    columnClass: 'text-center',
    hideType: 'lg|md|sm|xs',
}, {
    id: 'trInstruction',
    title: '费用报销明细说明',
    type: 'string',
    columnClass: 'text-left',
}, {
    id: 'operation',
    title: '操作',
    width: 280,
    type: 'string',
    columnClass: 'text-center',
    resolution: function (value, record, column, grid, dataNo, columnNo) {
        var content = '';
        content += '<button class="btn btn-xs btn-success" onclick="addPro(\'' + record.triCode + '\');"><i class="icon-plus"></i>  项目占比</button>';
        content += '  ';
        content += '<button class="btn btn-xs btn-primary" onclick="disMyModal(\'' + record.triCode + '\');"><i class="icon-eye-open"></i>  项目占比</button>';
        content += '  ';
        content += '<button class="btn btn-xs btn-info" onclick="editCC(\'' + record.triCode + '\');"><i class="fa fa-edit"></i>  编辑</button>';
        content += '  ';
        content += '<button class="btn btn-xs btn-danger" onclick="delTriItem(\'' + record.triCode + '\');"><i class="fa fa-trash-o"></i>  删除</button>';
        return content;
    }
}];
var afrOption = {
    lang: 'zh-cn',
    ajaxLoad: false,
    extraWidth: 20,
    // loadURL:'url',
    exportFileName: '报销费用明细',
    datas: [],
    columns: afrColumns,
    gridContainer: 'afrContainer',
    toolbarContainer: 'afrToolBarContainer',
    tools: '',
    pageSize: 10,
    pageSizeLimit: [10, 15, 20]
};
var nowprojectPercent;
var projIdNow;
triArray = new Array();

$$scope.trEntity = {};

$$scope.trEntity = {
    trCode: "tr-" + new Date().getTime() + Math.floor(Math.random() * 10000),
    items: triArray
};

$$scope.triPercentDis = true;

$CertusJsonAjax.ajax("openCCBXLCbsb", {
    "processInstanceId": $CertusJsonAjax.getProInstanceId(),
    "stepInstanceId": $CertusJsonAjax.getStepInstanceId()
}, function (res) {
    ;
    if (res.data) {

        $$scope.trEntity = res.data;


        if ($$scope.trEntity.travelCode && $$scope.trEntity.travelCode != "") {
            //先初始化 travelCode

            $CertusFormAjax.ajax("availablePolicyNumber", { "assigneeId": $$scope.trEntity.assigneeId }, function (res) {
                if (res.data) {
                    $$scope.availablePolicyNumberSelect = res.data;
                }
            })
            $$scope.travelCodeChange($$scope.trEntity.travelCode);
        }

        triArray = res.data.items;
        var afrOption1 = {
            lang: 'zh-cn',
            ajaxLoad: false,
            extraWidth: 20,
            // loadURL:'url',
            exportFileName: '报销费用明细',
            datas: res.data.items,
            columns: afrColumns,
            gridContainer: 'afrContainer',
            toolbarContainer: 'afrToolBarContainer',
            tools: '',
            pageSize: 10,
            pageSizeLimit: [10, 15, 20]
        };
        startGridTwo = $.fn.dlshouwen.grid.init(afrOption1);
        startGridTwo.load();
    }
})

var picker3 = $('#dateTime1').datetimepicker({
    format: 'YYYY-MM-DD',
    locale: moment.locale('zh-cn')
}).on('dp.hide', function (e) {
    var result = new moment(e.date).format('YYYY-MM-DD');
    if (result && !angular.isUndefined(result)) {
        $$scope.trItem.startDate = result;
        $$scope.$apply();
    }
})

var picker4 = $('#dateTime2').datetimepicker({
    format: 'YYYY-MM-DD',
    locale: moment.locale('zh-cn')
}).on('dp.hide', function (e) {
    var result = new moment(e.date).format('YYYY-MM-DD');
    if (result && !angular.isUndefined(result)) {
        $$scope.trItem.endDate = result;
        $$scope.$apply();
    }
})

//报销 条目
$$scope.ccClassSelect = [
    { name: "火车/汽车", code: "train" },
    { name: "飞机", code: "plan" },
    { name: "交通费用", code: "traffic" },
    { name: "住宿费用", code: "hotel" },
    // {name: "招待费", code: "repetition"},
    { name: "其他费用", code: "others" },
    { name: "出差补助", code: "travelAllowance" }
]

$$scope.ccCompanySelect = [
    { name: "赛特斯集团", code: "STSJT" },
    { name: "赛特斯南京", code: "STSNJ" },
    { name: "赛特斯广州", code: "STSGD" },
    { name: "赛特斯北京", code: "STSBJ" },
]

//选取 可以 直接 使用 的出差单号
$CertusFormAjax.ajax("availablePolicyNumber", {}, function (res) {
    if (res.data) {
        $$scope.availablePolicyNumberSelect = res.data;
    }
})
$$scope.travelCodeChange = function (a) {
    if (a) {
        for (var j in triArray) {
            triArray[j].projectPercent = null;
        }
        //初始化可以选取的 项目编号
        $CertusFormAjax.ajax("availableProjNumber", { travelCode: a }, function (res) {
            if (res.data) {
                $$scope.availableProjNumberSelect = res.data;
                tempOriginSelect = res.data;
            }
        })
        $$scope.triPercentDis = false;
        return;
    }
    $$scope.triPercentDis = true;

}

$$scope.addItem = function () {

    $$scope.trItem = {};
    $("#dateTime1").val("");
    $("#dateTime2").val("");
    $(".afrinfo").show();
}

$$scope.saveDraftCCBX = function () {
    $CertusJsonAjax.ajax("saveDraftCCBX", $$scope.trEntity, function (res) {
        if (res.data) {
            if (res.data == "success") {
                window.history.back();
            }
        }
    })
}

$CertusJsonAjax.ajax("queryCCBXLCProcessTrace", {
    "processInstanceId": $CertusJsonAjax.getProInstanceId(),
    "stepInstanceId": $CertusJsonAjax.getStepInstanceId()
}, function (res) {
    ;
    $$scope.processCCBXTrace = res.data;
})

var userPinin;
function isSamePinyin(element) {
    if (userPinin) {
        userPinin = userPinin.toUpperCase();
    }
    var pinyin = "";
    var userName2 = "";
    var userName = "";
    if (element.pinyin) {
        pinyin = element.pinyin.toUpperCase();
    }
    if (element.userName2) {
        userName2 = element.userName2.toUpperCase();
    }
    if (element.userName) {
        userName = element.userName.toUpperCase();
    }

    //部门名称 联动 查询
    return pinyin.indexOf(userPinin) > -1 || userName2.indexOf(userPinin) > -1 || userName.indexOf(userPinin) > -1;
}

$$scope.$watch('trEntity.assignee', function (principalName, oldName, b) {
    if (principalName != "") {
        var userSelect = $$scope.userSelect;
        if (principalName && principalName.indexOf(oldName) > -1 && b.userSelect && b.userSelect.length > 0) {
            userPinin = principalName;
            b.userSelect = b.userSelect.filter(isSamePinyin);
        } else {
            $CertusFormAjax.ajax("relatedUser", { name: principalName }, function (res) {
                if (res.data && res.data.length > 0) {
                    b.userSelect = res.data;
                }
            });
        }

        if (b.userSelect && b.userSelect.length == 1) {
            var userSelect2 = userSelect[0];
            $$scope.trEntity.assignee = userSelect2.userName + "(" + userSelect2.userId + ")";
            $$scope.trEntity.assigneeId = userSelect2.userId;


            //重新 触发 下拉 数据 查询 方法
            $CertusFormAjax.ajax("availablePolicyNumber", { "assigneeId": $$scope.trEntity.assigneeId }, function (res) {
                if (res.data) {
                    $$scope.availablePolicyNumberSelect = res.data;
                }
            })
        }
    } else if (principalName == "" || !principalName) {
        $$scope.trEntity.travelCode = null;
        //还原 出差单 下拉
        CertusFormAjax.ajax("availablePolicyNumber", {}, function (res) {
            if (res.data) {
                $$scope.availablePolicyNumberSelect = res.data;
            }
        })
    }
});

$$scope.startCCBXLc = function () {
    $$scope.trEntity.tmpProcessInstanceId = $CertusJsonAjax.getProInstanceId();
    $$scope.trEntity.tmpStepInstanceId = $CertusJsonAjax.getStepInstanceId();
    $$scope.trEntity.expenseType = 'trmType';
    if ($$scope.trEntity.chargeAgainest || $$scope.trEntity.borrowCode) {
        if ($$scope.trEntity.chargeAgainest && $$scope.trEntity.borrowCode) {

        } else {
            layer.msg("请补全冲销信息");
            return;
        }
    }
    $CertusJsonAjax.ajax("startCCBXLc", $$scope.trEntity, function (res) {
        $$scope.trEntity.tmpProcessInstanceId = $CertusJsonAjax.getProInstanceId();
        $$scope.trEntity.tmpStepInstanceId = $CertusJsonAjax.getStepInstanceId();
        if (res.data) {
            if (res.data.succed == "success") {
                nextApprovalManView(res.data.tip);
                window.history.back();
                return;
            }
            layer.msg(res.data.succed);
        }
    })
}

function isDifferentPercent(element) {
    return element.projId != projIdNow;
}


$$scope.percentSubmit = function (a) {
    projIdNow = a;
    for (var ii in $$scope.availableProjNumberSelect) {
        if ($$scope.availableProjNumberSelect[ii].code == a) {
            $$scope.triPercent.projName = $$scope.availableProjNumberSelect[ii].name
        }
    }
    if (!$$scope.triPercent.projName) {
        layer.msg("请选择项目(或者项目已经分配完成)");
        return;
    }
    if (nowprojectPercent) {
        for (var i in nowprojectPercent) {
            if (nowprojectPercent[i].projId == a) {
                nowprojectPercent[i] = $$scope.triPercent;
            }
        }

        nowprojectPercent = nowprojectPercent.filter(isDifferentPercent);
        nowprojectPercent.push($$scope.triPercent);
        for (var h in triArray) {
            if (triArray[h].triCode == codeNow) {
                triArray[h].projectPercent = nowprojectPercent;
                // triArray[h].originSurplus -= $$scope.triPercent.money
                surplusMet(triArray,codeNow,0,$CertusJsonAjax,$$scope);
            }
        }
    }
    $(".haddpro").hide();
}

$$scope.disDraft = function () {
    $("#yourModal").modal('show');
}

$CertusFormAjax.ajax("belongCompanyName", {}, function (res) {
    var companyCode = res.data;
    if (companyCode == "STSJT") {
        $$scope.belongCompanyName = "赛特斯集团";
    } else if (companyCode == "STSGD") {
        $$scope.belongCompanyName = "赛特斯广东";
    } else if (companyCode == "HFKJ") {
        $$scope.belongCompanyName = "浩方科技";
    } else if (companyCode == "HFXX") {
        $$scope.belongCompanyName = "浩方信息";
    } else if (companyCode == "STSBJ") {
        $$scope.belongCompanyName = "赛特斯北京";
    } else if (companyCode == "STSNJ") {
        $$scope.belongCompanyName = "赛特斯南京";
    }
})

$$scope.itemSubmit = function () {

    if (certusValidateNotnullPolyfill()) {
        var changeTr = {};

        $$scope.trItem.trCompanyName = $$scope.belongCompanyName;
        //补足 name
        // for (var j in $$scope.ccCompanySelect) {
        //     if ($$scope.ccCompanySelect[j].code == $$scope.trItem.trCompanyCode) {
        //         $$scope.trItem.trCompanyName = $$scope.ccCompanySelect[j].name;
        //     }
        // }

        for (var k in $$scope.ccClassSelect) {
            if ($$scope.ccClassSelect[k].code == $$scope.trItem.triClassCode) {
                $$scope.trItem.triClassName = $$scope.ccClassSelect[k].name;
            }
        }
        if ($$scope.trItem.projectPercent) {
            $$scope.trItem.originSurplus = $$scope.trItem.money;
            for (var i in $$scope.trItem.projectPercent) {
                $$scope.trItem.originSurplus -= $$scope.trItem.projectPercent[i].money;
            }
        }
        ;
        if ($$scope.trItem.originSurplus < 0) {
            layer.msg("目前项目分配钱，已经超过现有的总和");
            return;
        }

        $$scope.trItem.trCode = $$scope.trEntity.trCode;
        $$scope.trItem.triCode = "tri-" + new Date().getTime() + Math.floor(Math.random() * 10000);
        codeNow = $$scope.trItem.triCode;
        triArray = triArray.filter(isDifferent);
        triArray.push($$scope.trItem);
        //算出总金额
        $$scope.trEntity.totalAmount = 0;
        for (var b in triArray) {
            $$scope.trEntity.totalAmount += triArray[b].money;
        }
        startGridTwo.exhibitDatas = triArray;
        $$scope.trEntity.items = triArray;
        surplusMet(triArray,codeNow,0,$CertusJsonAjax,$$scope);
        startGridTwo.refresh(false);

        $('#dateTime1').datetimepicker('setStartDate', null);
        $('#dateTime2').datetimepicker('setStartDate', null);
        $(".afrinfo").hide();
    }
}


$$scope.closeAddItem = function () {
    $(".afrinfo").hide();
}

startGridTwo = $.fn.dlshouwen.grid.init(afrOption);
startGridTwo.exhibitDatas = triArray;

$$scope.$watch("triPercent.projName", function (newValue, old, scope) {
    if (old && newValue) {
        if (newValue.indexOf(old) > -1) {
            nowProjName = newValue;
            scope.userProjSelect2 = scope.userProjSelect2.filter(isSaveProjName);
            if (scope.userProjSelect2.length) {
                if (scope.userProjSelect2.length == 1) {
                    scope.triPercent.projId = scope.userProjSelect2[0].projId;
                    scope.triPercent.projName = scope.userProjSelect2[0].projName;
                }
            }
            if (!scope.userProjSelect2 || scope.userProjSelect2.length == 0) {
                scope.triPercent.projId = "";
                scope.triPercent.projName = "";
            }
            return;
        }
    }

    //直接去数据库 查询
    $CertusFormAjax.ajax("relatedProj", { param: newValue }, function (res) {
        scope.userProjSelect2 = res.data;
        if (scope.userProjSelect2.length) {

            if (scope.userProjSelect2.length == 1) {
                scope.triPercent.projId = scope.userProjSelect2[0].projId + "";
                scope.triPercent.projName = scope.userProjSelect2[0].projName;
            }
        }
    })
})

function dateChange1() {
    $$scope.startDate = $("#dateTime1").val();
    $$scope.$apply();
}

function dateChange2() {
    $$scope.endDate = $("#dateTime1").val();
    $$scope.$apply();
}

$$scope.$watch("triPercent.money", function (newValue, oldValue, scope) {
    if (newValue) {
        surplusMet(triArray,codeNow,newValue,$CertusJsonAjax,$$scope);
    }else{
        surplusMet(triArray,codeNow,newValue,$CertusJsonAjax,$$scope);
    }
});


$$scope.editPercent = function (projId) {
    for (var i in triArray) {
        if (triArray[i].triCode == codeNow) {
            for (var j in triArray[i].projectPercent) {
                $$scope.triPercent = triArray[i].projectPercent[j];
                $$scope.triPercent.projId = projId + "";
                // triArray[i].originSurplus += triArray[i].projectPercent[j].money;
                surplusMet(triArray,codeNow,0,$CertusJsonAjax,$$scope);
                $("#myModal").modal('hide');
                $(".haddpro").show();
            }
        }
    }
}

$$scope.delPercent = function (projId) {
    // layer.confirm('确认删除此数据？', {
    //     btn: ['确认', '取消'] //按钮
    // }, function () {
        for (var j in triArray) {
            if (triArray[j].triCode == codeNow) {
                for (var i in triArray[j].projectPercent) {
                    if (triArray[j].projectPercent[i].projId == projId) {
                        projIdNow == projId;
                        // triArray[j].originSurplus += triArray[j].projectPercent[i].money;
                        surplusMet(triArray,codeNow,0,$CertusJsonAjax,$$scope);
                        triArray[j].projectPercent = triArray[j].projectPercent.filter(isDiffPercent);
                        $$scope.nowprojectPercents = triArray[j].projectPercent;
                        return;
                    }
                }
            }
        }
    //     layer.msg('删除成功');
    // });



}


function delTriItem(triCode) {

    layer.confirm('确认删除此数据？', {
        btn: ['确认', '取消'] //按钮
    }, function () {
        for (var i in triArray) {
            if (triArray[i].triCode == triCode) {
                triArray = triArray.filter(isDifferent);
                startGridTwo.exhibitDatas = triArray;
                startGridTwo.refresh(false);
                $$scope.trEntity.items = triArray;
            }
        }
        layer.msg('删除成功');
    });


}

function disMyModal(triCode) {
    ;
    for (var i in triArray) {
        if (triArray[i].triCode == triCode) {
            if (triArray[i].projectPercent) {
                codeNow = triCode;
                nowprojectPercent = triArray[i].projectPercent;
                $$scope.trItem = triArray[i];
                $$scope.nowprojectPercents = nowprojectPercent;
                $$scope.$apply();
                $("#myModal").modal('show');
                // $(".haddpro").show();
            }
        }
    }
}

function isDifferentSelect(element) {
    return element.code != projIdNow;
}

function addPro(triCode) {

    for (var i in triArray) {

        if (triArray[i].triCode == triCode) {
            codeNow = triCode;
            $$scope.triPercent = {};
            // triArray[i].originSurplus = triArray[i].money;
            if (!triArray[i].projectPercent) {
                triArray[i].projectPercent = new Array();
                $$scope.availableProjNumberSelect = tempOriginSelect;
            } else {
                var tempSelect = tempOriginSelect;
                for (var j in triArray[i].projectPercent) {
                    ;
                    // triArray[i].originSurplus -= triArray[i].projectPercent[j].money
                    projIdNow = triArray[i].projectPercent[j].projId;
                    if (tempOriginSelect) {
                        tempSelect = tempSelect.filter(isDifferentSelect);
                    }
                }
                // $$scope.availableProjNumberSelect = tempSelect;
            }

            // $$scope.triPercent.surplus = triArray[i].originSurplus;
            nowprojectPercent = triArray[i].projectPercent
            $$scope.$apply();
            surplusMet(triArray,codeNow,0,$CertusJsonAjax,$$scope);

            $(".haddpro").show();
        }
    }
}

function haddpro() {
    $(".haddpro").hide();
}

function editCC(triCode) {
    for (var i in triArray) {
        if (triArray[i].triCode == triCode) {
            $$scope.trItem = triArray[i];

            $$scope.trItem.startDate = $$filter("date")($$scope.trItem.startDate, "yyyy-MM-dd");
            $$scope.trItem.endDate = $$filter("date")($$scope.trItem.endDate, "yyyy-MM-dd");
            $$scope.$apply();
        }
        $(".afrinfo").show();
    }
}

function isDifferent(element) {
    return element.triCode != codeNow;
}

function isDiffPercent(element) {
    return element.projId != projIdNow;
}




